/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package hxg.portmgr.core.oper.snmp.oidgroup;

import hxg.portmgr.core.oper.snmp.param.Param;
import org.snmp4j.smi.OID;

/**
 *
 * @author hxg
 */
public enum FlowOID implements OidEntry, Param {

    ifHCInOctets(new OID("1.3.6.1.2.1.31.1.1.1.6")) {
        @Override
        public String chsname() {
            return "入字节数";
        }

        @Override
        public String unit() {
            return "Byte";
        }
    },
    ifHCInUcasePkts(new OID("1.3.6.1.2.1.31.1.1.1.7")) {
        @Override
        public String chsname() {
            return "入单播字节数";
        }

        @Override
        public String unit() {
            return "Byte";
        }
    },
    ifHCInMulticastPkts(new OID("1.3.6.1.2.1.31.1.1.1.8")) {
        @Override
        public String chsname() {
            return "入组播字节数";
        }

        @Override
        public String unit() {
            return "Byte";
        }
    },
    ifHCInBoardCastPkts(new OID("1.3.6.1.2.1.31.1.1.1.9")) {
        @Override
        public String chsname() {
            return "入广播字节数";
        }

        @Override
        public String unit() {
            return "Byte";
        }
    },
    ifHCOutOctets(new OID("1.3.6.1.2.1.31.1.1.1.10")) {
        @Override
        public String chsname() {
            return "出字节数";
        }

        @Override
        public String unit() {
            return "Byte";
        }
    },
    ifHCOutUcasePkts(new OID("1.3.6.1.2.1.31.1.1.1.11")) {
        @Override
        public String chsname() {
            return "出单播字节数";
        }

        @Override
        public String unit() {
            return "Byte";
        }
    },
    ifHCOutMulticastPkts(new OID("1.3.6.1.2.1.31.1.1.1.12")) {
        @Override
        public String chsname() {
            return "出组播字节数";
        }

        @Override
        public String unit() {
            return "Byte";
        }
    },
    ifHCOutBoardCastPkts(new OID("1.3.6.1.2.1.31.1.1.1.13")) {
        @Override
        public String chsname() {
            return "出广播字节数";
        }

        @Override
        public String unit() {
            return "Byte";
        }
    },
    ifInOctets(new OID("1.3.6.1.2.1.2.2.1.10")) {
        @Override
        public String chsname() {
            return "入字节数[旧]";
        }

        @Override
        public String unit() {
            return "Byte";
        }
    },
    ifOutOctets(new OID("1.3.6.1.2.1.2.2.1.16")) {
        @Override
        public String chsname() {
            return "出字节数[旧]";
        }

        @Override
        public String unit() {
            return "Byte";
        }
    },
    ifInErrors(new OID("1.3.6.1.2.1.2.2.1.14")) {
        @Override
        public String chsname() {
            return "入错误字节";
        }

        @Override
        public String unit() {
            return "Byte";
        }
    },
    ifOutErrors(new OID("1.3.6.1.2.1.2.2.1.20")) {
        @Override
        public String chsname() {
            return "出错误字节";
        }

        @Override
        public String unit() {
            return "Byte";
        }
    };

    private FlowOID(OID oid) {
        this.oid = oid;
    }
    final private OID oid;

    @Override
    public OID getOID() {
        return oid;
    }

    @Override
    public String oidValue() {
        return oid.toString();
    }

    @Override
    public String toString() {
        return this.chsname();
    }

    @Override
    public RemoteValueType remoteValueType() {
        return RemoteValueType.NumberValue;
    }

    @Override
    public OID getAppendOID(OID appendOid) {
        return (new OID(oid)).append(appendOid);
    }

    @Override
    public Param getParamType() {
        return this;
    }
}
